package com.tingyuge.base.arithmetic.sort;


import com.tingyuge.base.arithmetic.tools.Integers;

/**
 * Created by xiaodao
 * date: 2020/4/3
 * 冒泡排序
 */
public class BubbingSort {
    public static void main(String[] args) {
        Integer[] array = Integers.random(10, 10, 100);
        HeapSort heapSort = new HeapSort();
        heapSort.sort(array);
       Integers.println(array);
    /*        Integer[] array1 = Integers.copy(array);

        //每次循环可以找到最后一个最大的.
     /*   Times.test("冒泡排序1", () -> {

            bubbleSort1(array1);
        });
        Times.test("冒泡排序3-优化局部有序", () -> {
            bubbleSort3(array);
        });*/

    }

    private static void bubbleSort1(Integer[] array) {

    }

    /**
     * 如果完全有序
     *
     * @param array
     */
    private static void bubbleSort2(Integer[] array) {

    }

    /**
     * 局部有序优化
     *
     * @param array
     */
    private static void bubbleSort3(Integer[] array) {
        for (int j = array.length - 1; j > 0; j--) {
            //这个值在完全有序的时候 ,循环一次就可以退出了.
            int sortIndex = 1;
            //如果局部有序的话.下一轮的循环到这里就行了.
            for (int i = 1; i <= j; i++) {

                if (array[i] < array[i - 1]) {
                    int temp = array[i];
                    array[i] = array[i - 1];
                    array[i - 1] = temp;
                    sortIndex = i;

                }

            }
            j = sortIndex;

        }
    }



}
